From e31187e1cf5ca9901a9f435e75375e5fd8723888 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sat, 20 Oct 2018 12:27:46 -0700 Subject: [PATCH] GdkQuartz: Handle NULL from [NSGraphicsContext currentContext]. By returning a default surface. The situation where there's no currentContext arises when GtkCSS is trying to determine the layout sizes so no actual display is necessary. Closes: #1411 --- gdk/quartz/gdksurface-quartz.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gdk/quartz/gdksurface-quartz.c b/gdk/quartz/gdksurface-quartz.c index ff7c62a688..ca4a54aaab 100644 --- a/gdk/quartz/gdksurface-quartz.c +++ b/gdk/quartz/gdksurface-quartz.c @@ -135,9 +135,11 @@ gdk_surface_impl_quartz_get_context (GdkSurfaceImplQuartz *surface_impl, return NULL; } if (gdk_quartz_osx_version () < GDK_OSX_YOSEMITE) - cg_context = [[NSGraphicsContext currentContext] graphicsPort]; + cg_context = [[NSGraphicsContext currentContext] graphicsPort]; else - cg_context = [[NSGraphicsContext currentContext] CGContext]; + cg_context = [[NSGraphicsContext currentContext] CGContext]; + if (!cg_context) + return NULL; CGContextSaveGState (cg_context); CGContextSetAllowsAntialiasing (cg_context, antialias); @@ -278,15 +280,15 @@ gdk_quartz_create_cairo_surface (GdkSurfaceImplQuartz *impl, cg_context = gdk_quartz_surface_get_context (impl, TRUE); - if (!cg_context) - return NULL; - surface_data = g_new (GdkQuartzCairoSurfaceData, 1); surface_data->surface_impl = impl; surface_data->cg_context = cg_context; - surface = cairo_quartz_surface_create_for_cg_context (cg_context, - width, height); + if (cg_context) + surface = cairo_quartz_surface_create_for_cg_context (cg_context, + width, height); + else + surface = cairo_quartz_surface_create(CAIRO_FORMAT_ARGB32, width, height); cairo_surface_set_user_data (surface, &gdk_quartz_cairo_key, surface_data, -- 2.30.2